package com.jiuqi.njt.management.task; import java.io.File; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.HttpContext; import com.jiuqi.mobile.nigo.comeclose.bean.app.file.RepairsFileBean; import com.jiuqi.njt.management.FregmentFileRepair.TaskFinished; import com.jiuqi.njt.management.task.MyMultipartEntity.ProgressListener; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.DateUtil; import com.jiuqi.njt.util.RepairUtils; import com.jiuqi.njt.util.UIUtil; import com.jqyd.camera.library.PhotoDisplayBlock; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; /** * 新增维修报修数据上传(包含图片) * @author * */ public class AddHttpMultipartPost extends AsyncTask<String, Integer, String> { private Context context; private ProgressDialog pd; private long totalSize; private Bundle bundle; private RepairsFileBean bean; private PhotoDisplayBlock photoDisplayBlock; private String pic_sort; private Map<String, String> postParams = new HashMap<String, String>(); private String actionUrl = Constants.SERVER_URL+"/ms/repairsFile!createRepairsFile.action"; private TaskFinished taskFinished; public AddHttpMultipartPost(Context context, RepairsFileBean bean, PhotoDisplayBlock photoDisplayBlock, String pic_sort,TaskFinished taskFinished) { super(); this.context = context; this.bean = bean; this.photoDisplayBlock = photoDisplayBlock; this.pic_sort = pic_sort; this.taskFinished = taskFinished; } @Override protected void onPreExecute() { pd = new ProgressDialog(context); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setMessage("正在上传数据请稍后。。。"); pd.setCancelable(false); pd.show(); } @Override protected String doInBackground(String... params) { String serverResponse = ""; HttpClient httpClient = new DefaultHttpClient(); HttpContext httpContext = new BasicHttpContext(); HttpPost httpPost = new HttpPost(actionUrl); upToServer(bundle, bean, photoDisplayBlock, pic_sort); try { MyMultipartEntity multipartContent = new MyMultipartEntity( new ProgressListener() { @Override public void transferred(long num) { publishProgress((int) ((num / (float) totalSize) * 100)); } }); if (params != null && !postParams.isEmpty()) { for (Map.Entry<String, String> entry : postParams.entrySet()) { StringBody par = null; try { if (entry.getValue() == null) { continue; } par = new StringBody(java.net.URLEncoder.encode( entry.getValue(), "UTF-8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } multipartContent.addPart(entry.getKey(), par); } } for (int i = 0; i < photoDisplayBlock.getPhotos().size(); i++) { FileBody file = new FileBody(new File(photoDisplayBlock.getPhotos().get(i).getPath())); multipartContent.addPart("imageFile", file); } // We use FileBody to transfer an image totalSize = multipartContent.getContentLength(); // Send it httpPost.setEntity(multipartContent); HttpResponse response = httpClient.execute(httpPost, httpContext); int res = response.getStatusLine().getStatusCode(); Log.e("图片上传返回相应码", res + ","); switch (res) { case 200: serverResponse = "数据上传成功"; break; case 404: serverResponse = "数据上传失败,请重试"; break; default: serverResponse = "数据上传失败,请重试"; } // } catch (Exception e) { serverResponse = "数据上传失败,请重试"; e.printStackTrace(); } return serverResponse; } @Override protected void onProgressUpdate(Integer... progress) { pd.setProgress((int) (progress[0])); } @Override protected void onPostExecute(String result) { pd.dismiss(); UIUtil.showMsg(context, result); if("数据上传成功".equals(result)){ taskFinished.whenTaskFinish(); } } @Override protected void onCancelled() { System.out.println("cancle"); } public String upToServer(Bundle bundle, RepairsFileBean bean, PhotoDisplayBlock photoDisplayBlock, String pic_sort) { if (pic_sort.equals("xzpg")) { postParams.put("repairsFileBean.guid", bean.getGuid()); postParams.put("repairsFileBean.repairManName", bean.getRepairManName()); postParams.put("repairsFileBean.repairManMobile", bean.getRepairManMobile()); postParams.put("repairsFileBean.repairManPhone", bean.getRepairManPhone()); postParams.put("repairsFileBean.factoryName", bean.getFactoryName()); postParams.put("repairsFileBean.brandName", bean.getBrandName()); postParams.put("repairsFileBean.productName", bean.getProductName()); postParams.put("repairsFileBean.modelName", bean.getModelName()); postParams.put("repairsFileBean.repairsAddress", bean.getRepairsAddress()); postParams.put("repairsFileBean.troubleDetail", bean.getTroubleDetail()); postParams.put("repairsFileBean.addPersonGuid", bean.getAddPersonGuid()); postParams.put("repairsFileBean.repairType", bean.getRepairType()+""); postParams.put("repairsFileBean.repairGuid", bean.getRepairGuid()); postParams.put("repairsDate", DateUtil.getTimeStamp( bean.getRepairsDate(), DateUtil.YYYY_MM_DD)); postParams.put("madeDate", DateUtil.getTimeStamp( bean.getMadeDate(), DateUtil.YYYY_MM_DD)); postParams.put("buyDate", DateUtil.getTimeStamp( bean.getBuyDate(), DateUtil.YYYY_MM_DD)); postParams.put("repairsFileBean.longitude", bean.getLongitude()+""); postParams.put("repairsFileBean.latitude", bean.getLatitude()+""); postParams.put("repairsFileBean.repairsNO", RepairUtils.getDateString()); postParams.put("repairsFileBean.repairsFileNO", RepairUtils.getFileNo(context)); postParams.put("flag", pic_sort); } return null; } }